package br.com.devteam.base.converter;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

import br.com.devteam.base.validator.DateValidator;

@FacesConverter(value = "DateConverter")
public class DateHourConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
		
		if (arg2 != null && DateValidator.validate(arg2)) {
			
			String[] data_hora = arg2.split(" ");
			
			String[] splitData = data_hora[0].split("/");
			String[] splitHora = data_hora[1].split(":");
			
			GregorianCalendar calendar = new GregorianCalendar(
					Integer.valueOf(splitData[2]), 
					Integer.valueOf(splitData[1]) - 1/*necessário, pois a contagem dos meses começa no zero*/, 
					Integer.valueOf(splitData[0]),
					Integer.valueOf(splitHora[0]),
					Integer.valueOf(splitHora[1]),
					Integer.valueOf(splitHora[2]));
			return calendar.getTime();
		}
		
		return arg2;
	}

	@Override
	public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
		
		if (arg2 != null && arg2 instanceof Date) {
			SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
			return format.format(arg2);
		}
		
		return null;
	}
}
